/**
 * 选择键值
 * @description
 * 从类型 T 中选择一组属性 K 的类型
 * extends K 必须是 T 键值集合的子集
 * p in K 遍历 K 的键值
 * T[p] 获取 T 中键值 p 的类型
 */

type IPick<T, K extends keyof T> = {
  [p in K]: T[p]
}

const objPick = {
  name: '张三',
  age: 18,
  gender: '男'
}

type PickObj = IPick<typeof objPick, 'name' | 'age'>

const pickObj: PickObj = {
  name: '张三',
  age: 18
}
